# Docker SOCKS5 Proxy

Данный репозиторий позволит с минимальными затратами запустить свой собственный socks5 proxy-сервер.

## Quickstart

Ниже приведена инструкция по подъему SOCKS5 прокси. Единственное требование - наличие [белого](https://help.keenetic.net/hc/ru/articles/213965789-В-чем-отличие-белого-и-серого-IP-адреса-) IP. Если у Вас нет личного сервера, то внизу страницы приведена инструкция по настройке бесплатного сервера на AWS. Вы также можете использовать любого другого провайдера облачных серверов.

1. Установите Docker engine.
   
   Выберите инструкцию для вашей ОС. Тестирование всей системы проводилось только для Ubuntu, но для других ОС все также должно работать с некоторыми модификациями приведенных ниже команд.
 
   1. [Ubuntu](https://docs.docker.com/install/linux/docker-ce/ubuntu/#install-docker-ce)
   2. [Mac](https://docs.docker.com/docker-for-mac/install/)
   3. [Windows](https://docs.docker.com/docker-for-windows/install/)
   
2. Склонируйте данный репозиторий

   ```bash
   git clone https://github.com/elejke/docker-socks5.git
   cd docker-socks5
   ```
   
3. Соберите Docker-образ

   ```bash
   sudo docker build -t socks5 .
   ```
   
   Если вы хотите использовать логин и пароль для своего сервера, то исправьте соответствующую строчку в [Dockerfile](Dockerfile#L4) на желаемую пару логин/пароль.
   
4. Запустите Docker-образ:

   ```bash
   sudo docker run -d -p 80:1080 socks5
   ```
   
   В данном случае прокси-сервер будет работать на порте 80. Вы можете изменить его на произвольный изменив соответствующее число при запуске Docker-контейнера. Обратите внимание, что выбранный порт должен быть открыт для доступа извне.
   
   Если вы хотите использовать логин/пароль для своего прокси, то надо также добавить файл конфигурации в Docker-контейнер, что делается добавлением опции при запуске:
   
   ```bash
   sudo docker run -d -p 80:1080 -v ${PWD}/sockd.conf:/etc/sockd.conf socks5
   ```
   
   При этом будут использованы логин/пароль указанные на шаге 3.
   
5. Ваш прокси-сервер готов!

   Используйте ваш IP-адрес, указанный на шаге 4 порт и логин/пароль (если заданы) в любом приложении!
   
   Для Telegram соответствующие настройки лежат в: 
   
   1. **iOS**: Settings - Data and Storage - Use Proxy
   2. **Desktop**: Settings - Privacy and Security - Use Proxy
   
## Беслатный сервер на Amazon [AWS](https://aws.amazon.com)

1. Рагистрация AWS аккаунта с возможностью поднятия бесплатных серверов в течении 12 месяцев:
   
   1. Создайте аккаунт на https://aws.amazon.com/free/ выбрав тип аккаунт **Personal**. При использовании бесплатных серверов деньги с привязанной карты не будут расходоваться за исключением 1$, который будет снят при регистрации.
   2. Войдите в созданный акканут с помощью: https://console.aws.amazon.com
   3. Окончание регистрации и подтверждение возможности выделения ресурсов может занять до 24 часов. Проверить, закончилась она или нет можно в консоли: зайдите во вкладку **Services** и нажмите **EC2**

2. Для запуска бесплатного сервера на **AWS EC2** зайдите во вкладку **Services > EC2** и нажмите **Launch Instance**, в левой части нажмите галочку возле надписи **Free tier only** и выберите в списке образ **Ubuntu Server 16.04 LTS (HVM), SSD Volume Type - ami-43a15f3e**
    
   1. Выберите **t2.micro**
   2. В верхней части экрана кликните **Configure Security Group**, нажмите **Add Rule** и в выпадающем списке выберите **HTTP** (ваш прокси сервер будет уже сконфигурирован для использования 80) 
   3. Нажмите **Review and Launch > Launch**
      
      1. В появившемся окне нажмите Create a new key pair,назовите её socks5 и нажмите Download Key Pair и Launch Instance.
      2.  Поздравляю! Вы запустили сервер.

3. Зайдите во вкладку **Instances** в левой части консоли **EC2** и выберите запущенный сервер, нажмите клавишу **Connect** и следуйте указаниям (измените права ключа и подключитесь из консоли по **ssh**)
